package LeetCode.LeetCode2;

/**
 * 移动0
 * @author lumin
 * @date 2022/03/18 12:17
 **/
public class Num283 {
    /**
     * 双层循环,时间复杂度为O(n^2)
     * @param nums
     */
//    public void moveZeroes(int[] nums) {
//        for (int i = 0; i < nums.length; i++) {
//            for (int j = 0; j + 1 < nums.length; j++) {
//                if(nums[j] == 0){
//                    int temp = nums[j];
//                    nums[j] = nums[j + 1];
//                    nums[j + 1] = temp;
//                }
//            }
//        }
//    }

    /**
     * 双指针
     * @param nums
     */
    public void moveZeroes(int[] nums) {
        int left = 0;
        int right = left + 1;
        while(right < nums.length){
            if(nums[left] == 0 && nums[right] != 0){
                int temp = nums[left];
                nums[left] = nums[right];
                nums[right] = temp;
            }
            if(nums[left] == 0 && nums[right] == 0){
                right++;
                continue;
            }
            if(nums[left] != 0 && nums[right] == 0){
                left++;
                continue;
            }
            left++;
            right++;
        }
    }
}